2023/12/232070字符

Array

API

const arr = Array.of(1, 2, 3, 4, 5);  // 创建数组,只传递一个参数也是一个 length 为 1 的数组
    
arr.includes(4);  //--> true  查找

arr.find((val, i) => val > 2);  //--> 3  返回 value 值

arr.findIndex((val, i) => val > 2);  //--> 2  返回索引值,找不到返回 -1

arr.map((val, i) => val < 4);  //--> [true, true, true, false, false]  遍历数组,返回 boolean

arr.filter((val, i) => i < 3);  //--> [1, 2, 3]  过滤

arr.fill('holle', 2, 4);  //--> [1, 2, 'hello', 'hello', 3]  填充/替换

arr.copyWithin(2);  //--> [1, 2, 1, 2, 'hello']  从索引为 2 的地方重新排列数组

arr.copyWithin(2, 0, 3);  // 后两位参数规定了循环原数组索引 0 - 3 的数据

数组去重

const list = [1, 2, 3, 4, 5, 4, 3, 2, 1];
[...new Set(list)];  //--> [1, 2, 3, 4, 5]  数组去重

数组降维

const arr = [1, [2, [3, [4, 5]]]];
arr.flat(2);  //--> [1, 2, 3, [4, 5]]  降维指定层数
arr.flat(Infinity);  //--> [1, 2, 3, 4, 5]

分隔遍历

let strArr = ['My name is NB', 'I like cute girl'];
strArr.flatMap(item => item.split(' '));  //--> ["My", "name", "is", "NB", "I", "like", "cute", "girl"]

类数组转数组

const arr = document.getElementsByTagName('li');
[].slice.call(arr);  // es5 之前转换数组方法

// es6 新增方法
Array.from(arr);  // 类数组中创建一个数组
console.log([...arr]);  //--> (4) [li, li, li, li]

const obj = {
    0 : 'aaa',
    1 : 'bbb',
    2 : 'ccc',
    length : 2
}
Array.from(obj);  //--> (2) ["aaa", "bbb"]  from() 只对有 length 属性有效

Intl.Collator 语言敏感字符串比较

const arr = [1, '1', 'hello', '你好', '傻x', '2货', 's叉', 'age18'];
arr.sort(new Intl.Collator("zh").compare);  //--> [1, "1", "2货", "你好", "傻x", "age18", "hello", "s叉"]
arr.sort(new Intl.Collator("en").compare);  //--> [1, "1", "2货", "age18", "hello", "s叉", "你好", "傻x"]